package com.itheima.config;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

/**
 * @Author Andy
 * @Description //TODO MyMetaObjectHandler
 * @Date 2022/3/10 2:52 下午
 * @Version 1.0
 **/
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
//    在同一个线程内，获取共享变量，因为insertFill(MetaObject metaObject)没有
//    办法传进去从session中获取的当前登录用户

    @Override
    public void insertFill(MetaObject metaObject) {
        System.out.println("fill thread id" + Thread.currentThread().getId());
        metaObject.setValue("createUser", BaseContext.getCurrentId());
        metaObject.setValue("updateUser", BaseContext.getCurrentId());
        metaObject.setValue("createTime", LocalDateTime.now());
        metaObject.setValue("updateTime", LocalDateTime.now());
//        之后当前登录用户ID使用完
//        BaseContext.remove();
    }
//    threadLocal的使用，用来做同一个线程内，共享变量，可以在过滤器一直到dao，各个层去使用
//    共享变量，注意：threadLocal中存储的变量使用后一定记住要手动remove掉

    @Override
    public void updateFill(MetaObject metaObject) {

        metaObject.setValue("updateUser", BaseContext.getCurrentId());
        metaObject.setValue("updateTime", LocalDateTime.now());
        //        之后当前登录用户ID使用完
//        BaseContext.remove();
    }
}
